package tests

import org.scalatest._
import tp1._

class CursoTest extends FlatSpec {
  var profesor = new Docente("profe")
  var otroCurso = new Curso(profesor)
  var alumno1 = new Estudiante("uno", 11111)
  var alumno2 = new Estudiante("dos", 11111)
  otroCurso.anotarAlumno(alumno1)
  otroCurso.anotarAlumno(alumno2)
  var abandonada = new Abandonada()
  abandonada.initialize(0, new Materia("BD"), otroCurso)
  var aprobada = new Aprobada()
  aprobada.initialize(7, new Materia("Mate"), new Curso(new Docente("pepe")))
  var desaprobada = new Desaprobada()
  desaprobada.initialize(3, new Materia("BD"), otroCurso)
  alumno1.actualizarFoja(abandonada)
  alumno1.actualizarFoja(aprobada)
  alumno2.actualizarFoja(desaprobada)

  "un curso" should "estar bien seteado" in {
    var profe = new Docente("profe")
    var curso = new Curso(profe)
    assert(curso.docente == profe)
    assert(profe.cursos.size == 1)
  }

  "un curso" should "anotar a un alumno" in {
    var otroCurso = new Curso(profesor)
    otroCurso.anotarAlumno(new Estudiante("Alguien", 11111))
    assert(!otroCurso.estudiantes.isEmpty)
    assert(otroCurso.estudiantes.size == 1)
  }

  "un curso" should "darme 2 cursadas" in {

    assert(otroCurso.getCursadas.size == 2)
  }

  "un curso" should "darme 0 cursada aprobada" in {
    assert(otroCurso.cursadasAprobadas == 0)
  }

  "un curso" should "darme una cursada abandonada" in {
    assert(otroCurso.cursosAbandonados == 1)
  }

  "un curso" should "darme 0.0 de cursadas aprobadas sobre iniciadas" in {
    assert(otroCurso.cursosAprobadoSobreIniciados == 0.0)
  }

  "un curso" should "darme 3.0 en promedio con aplazos" in {
    assert(otroCurso.promedioConAplazos == 3.0)
  }

  "un curso" should "devolver una tabla de notas" in {
    var tabla = otroCurso.tablaDeNotas
    assert(tabla(1) == 0)
    assert(tabla(2) == 0)
    assert(tabla(3) == 1)
    assert(tabla(4) == 0)
    assert(tabla(5) == 0)
    assert(tabla(6) == 0)
    assert(tabla(7) == 0)
    assert(tabla(8) == 0)
    assert(tabla(9) == 0)
    assert(tabla(10) == 0)
    
  }
}